export default {
  menu: {
    knowledgeBase: 'Knowledge Base',
    chat: 'Chat',
    createChat: 'Create Chat',
    tenant: 'Account Info',
    settings: 'System Settings',
    logout: 'Logout',
    uploadKnowledge: 'Upload Knowledge',
    deleteRecord: 'Delete Record',
    newSession: 'New Chat',
    confirmLogout: 'Are you sure you want to logout?',
    systemInfo: 'System Information'
  },
  knowledgeBase: {
    title: 'Knowledge Base',
    list: 'Knowledge Base List',
    detail: 'Knowledge Base Details',
    create: 'Create Knowledge Base',
    edit: 'Edit Knowledge Base',
    delete: 'Delete Knowledge Base',
    name: 'Name',
    description: 'Description',
    files: 'Files',
    settings: 'Settings',
    upload: 'Upload File',
    uploadSuccess: 'File uploaded successfully!',
    uploadFailed: 'File upload failed!',
    fileExists: 'File already exists',
    notInitialized: 'Knowledge base is not initialized. Please configure models in settings before uploading files',
    getInfoFailed: 'Failed to get knowledge base information, file upload is not possible',
    missingId: 'Knowledge base ID is missing',
    deleteFailed: 'Delete failed. Please try again later!',
    createKnowledgeBase: 'Create Knowledge Base',
    knowledgeBaseName: 'Knowledge Base Name',
    enterName: 'Enter knowledge base name',
    embeddingModel: 'Embedding Model',
    selectEmbeddingModel: 'Select embedding model',
    summaryModel: 'Summary Model',
    selectSummaryModel: 'Select summary model',
    rerankModel: 'Rerank Model',
    selectRerankModel: 'Select rerank model (optional)',
    createSuccess: 'Knowledge base created successfully',
    createFailed: 'Failed to create knowledge base',
    updateSuccess: 'Knowledge base updated successfully',
    updateFailed: 'Failed to update knowledge base',
    deleteSuccess: 'Knowledge base deleted successfully',
    deleteConfirm: 'Are you sure you want to delete this knowledge base?',
    fileName: 'File Name',
    fileSize: 'File Size',
    uploadTime: 'Upload Time',
    status: 'Status',
    actions: 'Actions',
    processing: 'Processing',
    completed: 'Completed',
    failed: 'Failed',
    noFiles: 'No files',
    dragFilesHere: 'Drag files here or',
    clickToUpload: 'click to upload',
    supportedFormats: 'Supported formats',
    maxFileSize: 'Max file size',
    viewDetails: 'View Details',
    downloadFile: 'Download File',
    deleteFile: 'Delete File',
    confirmDeleteFile: 'Are you sure you want to delete this file?',
    totalFiles: 'Total files',
    totalSize: 'Total size',
    // Additional translations for KnowledgeBase.vue
    newSession: 'New Chat',
    deleteDocument: 'Delete Document',
    parsingFailed: 'Parsing failed',
    parsingInProgress: 'Parsing...',
    deleteConfirmation: 'Delete Confirmation',
    confirmDeleteDocument: 'Confirm deletion of document "{fileName}", recovery will be impossible after deletion',
    cancel: 'Cancel',
    confirmDelete: 'Confirm Delete',
    selectKnowledgeBaseFirst: 'Please select a knowledge base first',
    sessionCreationFailed: 'Failed to create chat session',
    sessionCreationError: 'Chat session creation error',
    settingsParsingFailed: 'Failed to parse settings',
    fileUploadEventReceived: 'File upload event received, uploaded knowledge base ID: {uploadedKbId}, current knowledge base ID: {currentKbId}',
    matchingKnowledgeBase: 'Matching knowledge base, starting file list update',
    routeParamChange: 'Route parameter change, re-fetching knowledge base content',
    fileUploadEventListening: 'Listening for file upload events',
    apiCallKnowledgeFiles: 'Direct API call to get knowledge base file list',
    responseInterceptorData: 'Since the response interceptor has already returned data, result is part of the response data',
    hookProcessing: 'Processing according to useKnowledgeBase hook method',
    errorHandling: 'Error handling',
    priorityCurrentPageKbId: 'Priority to use knowledge base ID of current page',
    fallbackLocalStorageKbId: 'If current page has no knowledge base ID, attempt to get knowledge base ID from settings in localStorage',
    // Additional translations for KnowledgeBaseList.vue
    createNewKnowledgeBase: 'Create Knowledge Base',
    uninitializedWarning: 'Some knowledge bases are not initialized, you need to configure model information in settings first to add knowledge documents',
    initializedStatus: 'Initialized',
    notInitializedStatus: 'Not Initialized',
    needSettingsFirst: 'You need to configure model information in settings first to add knowledge',
    documents: 'Documents',
    configureModelsFirst: 'Please configure model information in settings first',
    confirmDeleteKnowledgeBase: 'Confirm deletion of this knowledge base?',
    createKnowledgeBaseDialog: 'Create Knowledge Base',
    enterNameKb: 'Enter name',
    enterDescriptionKb: 'Enter description',
    createKb: 'Create',
    deleted: 'Deleted',
    deleteFailedKb: 'Delete failed',
    noDescription: 'No description',
    emptyKnowledgeDragDrop: 'Knowledge is empty, drag and drop to upload',
    pdfDocFormat: 'pdf, doc format files, max 10M',
    textMarkdownFormat: 'text, markdown format files, max 200K',
    dragFileNotText: 'Please drag files instead of text or links'
  },
  chat: {
    title: 'Chat',
    newChat: 'New Chat',
    inputPlaceholder: 'Enter your message...',
    send: 'Send',
    thinking: 'Thinking...',
    regenerate: 'Regenerate',
    copy: 'Copy',
    delete: 'Delete',
    reference: 'Reference',
    noMessages: 'No messages',
    // Additional translations for chat components
    waitingForAnswer: 'Waiting for answer...',
    cannotAnswer: 'Sorry, I cannot answer this question.',
    summarizingAnswer: 'Summarizing answer...',
    loading: 'Loading...',
    enterDescription: 'Enter description',
    referencedContent: '{count} related materials used',
    deepThinking: 'Deep thinking completed',
    knowledgeBaseQandA: 'Knowledge Base Q&A',
    askKnowledgeBase: 'Ask the knowledge base',
    sourcesCount: '{count} sources',
    pleaseEnterContent: 'Please enter content!',
    pleaseUploadKnowledgeBase: 'Please upload knowledge base first!',
    replyingPleaseWait: 'Replying, please try again later!',
    createSessionFailed: 'Failed to create session',
    createSessionError: 'Session creation error',
    unableToGetKnowledgeBaseId: 'Unable to get knowledge base ID'
  },
  settings: {
    title: 'Settings',
    system: 'System Settings',
    systemConfig: 'System Configuration',
    knowledgeBaseSettings: 'Knowledge Base Settings',
    configureKbModels: 'Configure models and document splitting parameters for this knowledge base',
    manageSystemModels: 'Manage and update system models and service configurations',
    basicInfo: 'Basic Information',
    documentSplitting: 'Document Splitting',
    apiEndpoint: 'API Endpoint',
    enterApiEndpoint: 'Enter API endpoint, e.g.: http://localhost',
    enterApiKey: 'Enter API key',
    enterKnowledgeBaseId: 'Enter knowledge base ID',
    saveConfig: 'Save Configuration',
    reset: 'Reset',
    configSaved: 'Configuration saved successfully',
    enterApiEndpointRequired: 'Enter API endpoint',
    enterApiKeyRequired: 'Enter API key',
    enterKnowledgeBaseIdRequired: 'Enter knowledge base ID',
    name: 'Name',
    enterName: 'Enter name',
    description: 'Description',
    chunkSize: 'Chunk Size',
    chunkOverlap: 'Chunk Overlap',
    save: 'Save',
    saving: 'Saving...',
    saveSuccess: 'Saved successfully',
    saveFailed: 'Failed to save',
    model: 'Model',
    llmModel: 'LLM Model',
    embeddingModel: 'Embedding Model',
    rerankModel: 'Rerank Model',
    vlmModel: 'Multimodal Model',
    modelName: 'Model Name',
    modelUrl: 'Model URL',
    apiKey: 'API Key',
    cancel: 'Cancel',
    saveFailedSettings: 'Failed to save settings',
    enterNameRequired: 'Enter name'
  },
  initialization: {
    title: 'Initialization',
    welcome: 'Welcome to WeKnora',
    description: 'Please configure the system before starting',
    step1: 'Step 1: Configure LLM Model',
    step2: 'Step 2: Configure Embedding Model',
    step3: 'Step 3: Configure Additional Models',
    complete: 'Complete Initialization',
    skip: 'Skip',
    next: 'Next',
    previous: 'Previous',
    // Ollama service
    ollamaServiceStatus: 'Ollama Service Status',
    refreshStatus: 'Refresh Status',
    ollamaServiceAddress: 'Ollama Service Address',
    notConfigured: 'Not Configured',
    notRunning: 'Not Running',
    normal: 'Normal',
    installedModels: 'Installed Models',
    none: 'None temporarily',
    // Knowledge base
    knowledgeBaseInfo: 'Knowledge Base Information',
    knowledgeBaseName: 'Knowledge Base Name',
    knowledgeBaseNamePlaceholder: 'Enter knowledge base name',
    knowledgeBaseDescription: 'Knowledge Base Description',
    knowledgeBaseDescriptionPlaceholder: 'Enter knowledge base description',
    // LLM model
    llmModelConfig: 'LLM Large Language Model Configuration',
    modelSource: 'Model Source',
    local: 'Ollama (Local)',
    remote: 'Remote API (Remote)',
    modelName: 'Model Name',
    modelNamePlaceholder: 'E.g.: qwen3:0.6b',
    baseUrl: 'Base URL',
    baseUrlPlaceholder: 'E.g.: https://api.openai.com/v1, remove /chat/completions from the end of URL',
    apiKey: 'API Key (Optional)',
    apiKeyPlaceholder: 'Enter API Key (Optional)',
    downloadModel: 'Download Model',
    installed: 'Installed',
    notInstalled: 'Not Installed',
    notChecked: 'Not Checked',
    checkConnection: 'Check Connection',
    connectionNormal: 'Connection Normal',
    connectionFailed: 'Connection Failed',
    checkingConnection: 'Checking Connection',
    // Embedding model
    embeddingModelConfig: 'Embedding Model Configuration',
    embeddingWarning: 'Knowledge base already has files, cannot change embedding model configuration',
    dimension: 'Dimension',
    dimensionPlaceholder: 'Enter vector dimension',
    detectDimension: 'Detect Dimension',
    // Rerank model
    rerankModelConfig: 'Rerank Model Configuration',
    enableRerank: 'Enable Rerank Model',
    // Multimodal settings
    multimodalConfig: 'Multimodal Configuration',
    enableMultimodal: 'Enable image information extraction',
    visualLanguageModelConfig: 'Visual Language Model Configuration',
    interfaceType: 'Interface Type',
    openaiCompatible: 'OpenAI Compatible Interface',
    // Storage settings
    storageServiceConfig: 'Storage Service Configuration',
    storageType: 'Storage Type',
    bucketName: 'Bucket Name',
    bucketNamePlaceholder: 'Enter Bucket name',
    pathPrefix: 'Path Prefix',
    pathPrefixPlaceholder: 'E.g.: images',
    secretId: 'Secret ID',
    secretIdPlaceholder: 'Enter COS Secret ID',
    secretKey: 'Secret Key',
    secretKeyPlaceholder: 'Enter COS Secret Key',
    region: 'Region',
    regionPlaceholder: 'E.g.: ap-beijing',
    appId: 'App ID',
    appIdPlaceholder: 'Enter App ID',
    // Multimodal function testing
    functionTest: 'Function Test',
    testDescription: 'Upload an image to test the model\'s image description and text recognition functions',
    selectImage: 'Select Image',
    startTest: 'Start Test',
    testResult: 'Test Result',
    imageDescription: 'Image Description:',
    textRecognition: 'Text Recognition:',
    processingTime: 'Processing Time:',
    testFailed: 'Test Failed',
    multimodalProcessingFailed: 'Multimodal processing failed',
    // Document splitting
    documentSplittingConfig: 'Document Splitting Configuration',
    splittingStrategy: 'Splitting Strategy',
    balancedMode: 'Balanced Mode',
    balancedModeDesc: 'Chunk size: 1000 / Overlap: 200',
    precisionMode: 'Precision Mode',
    precisionModeDesc: 'Chunk size: 512 / Overlap: 100',
    contextMode: 'Context Mode',
    contextModeDesc: 'Chunk size: 2048 / Overlap: 400',
    custom: 'Custom',
    customDesc: 'Configure parameters manually',
    chunkSize: 'Chunk Size',
    chunkOverlap: 'Chunk Overlap',
    separatorSettings: 'Separator Settings',
    selectOrCustomSeparators: 'Select or customize separators',
    characters: 'characters',
    separatorParagraph: 'Paragraph separator (\\n\\n)',
    separatorNewline: 'Newline (\\n)',
    separatorPeriod: 'Period (。)',
    separatorExclamation: 'Exclamation mark (！)',
    separatorQuestion: 'Question mark (？)',
    separatorSemicolon: 'Semicolon (;)',
    separatorChineseSemicolon: 'Chinese semicolon (；)',
    separatorComma: 'Comma (,)',
    separatorChineseComma: 'Chinese comma (，)',
    // Entity and relation extraction
    entityRelationExtraction: 'Entity and Relation Extraction',
    enableEntityRelationExtraction: 'Enable entity and relation extraction',
    relationTypeConfig: 'Relation Type Configuration',
    relationType: 'Relation Type',
    generateRandomTags: 'Generate Random Tags',
    completeModelConfig: 'Please complete model configuration',
    systemWillExtract: 'The system will extract corresponding entities and relations from the text according to the selected relation types',
    extractionExample: 'Extraction Example',
    sampleText: 'Sample Text',
    sampleTextPlaceholder: 'Enter text for analysis, e.g.: "Red Mansion", also known as "Dream of the Red Chamber", is one of the four great classical novels of Chinese literature, written by Cao Xueqin during the Qing Dynasty...',
    generateRandomText: 'Generate Random Text',
    entityList: 'Entity List',
    nodeName: 'Node Name',
    nodeNamePlaceholder: 'Node name',
    addAttribute: 'Add Attribute',
    attributeValue: 'Attribute Value',
    attributeValuePlaceholder: 'Attribute value',
    addEntity: 'Add Entity',
    completeEntityInfo: 'Please complete entity information',
    relationConnection: 'Relation Connection',
    selectEntity: 'Select Entity',
    addRelation: 'Add Relation',
    completeRelationInfo: 'Please complete relation information',
    startExtraction: 'Start Extraction',
    extracting: 'Extracting...',
    defaultExample: 'Default Example',
    clearExample: 'Clear Example',
    // Buttons and messages
    updateKnowledgeBaseSettings: 'Update Knowledge Base Settings',
    updateConfigInfo: 'Update Configuration Information',
    completeConfig: 'Complete Configuration',
    waitForDownloads: 'Please wait for all Ollama models to finish downloading before updating configuration',
    completeModelConfigInfo: 'Please complete model configuration information',
    knowledgeBaseIdMissing: 'Knowledge base ID is missing',
    knowledgeBaseSettingsUpdateSuccess: 'Knowledge base settings updated successfully',
    configUpdateSuccess: 'Configuration updated successfully',
    systemInitComplete: 'System initialization completed',
    operationFailed: 'Operation failed',
    updateKnowledgeBaseInfoFailed: 'Failed to update knowledge base basic information',
    knowledgeBaseIdMissingCannotSave: 'Knowledge base ID is missing, cannot save configuration',
    operationFailedCheckNetwork: 'Operation failed, please check network connection',
    imageUploadSuccess: 'Image uploaded successfully, testing can begin',
    multimodalConfigIncomplete: 'Multimodal configuration incomplete, please complete multimodal configuration before uploading images',
    pleaseSelectImage: 'Please select an image',
    multimodalTestSuccess: 'Multimodal test successful',
    multimodalTestFailed: 'Multimodal test failed',
    pleaseEnterSampleText: 'Please enter sample text',
    pleaseEnterRelationType: 'Please enter relation type',
    pleaseEnterLLMModelConfig: 'Please enter LLM large language model configuration',
    noValidNodesExtracted: 'No valid nodes extracted',
    noValidRelationsExtracted: 'No valid relations extracted',
    extractionFailedCheckNetwork: 'Extraction failed, please check network or text format',
    generateFailedRetry: 'Generation failed, please try again',
    pleaseCheckForm: 'Please check form correctness',
    detectionSuccessful: 'Detection successful, dimension automatically filled as',
    detectionFailed: 'Detection failed',
    detectionFailedCheckConfig: 'Detection failed, please check configuration',
    modelDownloadSuccess: 'Model downloaded successfully',
    modelDownloadFailed: 'Model download failed',
    downloadStartFailed: 'Download start failed',
    queryProgressFailed: 'Progress query failed',
    checkOllamaStatusFailed: 'Ollama status check failed',
    getKnowledgeBaseInfoFailed: 'Failed to get knowledge base information',
    textRelationExtractionFailed: 'Text relation extraction failed',
    // Validation
    pleaseEnterKnowledgeBaseName: 'Please enter knowledge base name',
    knowledgeBaseNameLength: 'Knowledge base name length must be 1-50 characters',
    knowledgeBaseDescriptionLength: 'Knowledge base description cannot exceed 200 characters',
    pleaseEnterLLMModelName: 'Please enter LLM model name',
    pleaseEnterBaseURL: 'Please enter BaseURL',
    pleaseEnterEmbeddingModelName: 'Please enter embedding model name',
    pleaseEnterEmbeddingDimension: 'Please enter embedding dimension',
    dimensionMustBeInteger: 'Dimension must be a valid integer, usually 768, 1024, 1536, 3584, etc.',
    pleaseEnterTextContent: 'Please enter text content',
    textContentMinLength: 'Text content must contain at least 10 characters',
    pleaseEnterValidTag: 'Please enter a valid tag',
    tagAlreadyExists: 'This tag already exists',
    // Additional translations for InitializationContent.vue
    checkFailed: 'Check failed',
    startingDownload: 'Starting download...',
    downloadStarted: 'Download started',
    model: 'Model',
    startModelDownloadFailed: 'Failed to start model download',
    downloadCompleted: 'Download completed',
    downloadFailed: 'Download failed',
    knowledgeBaseSettingsModeMissingId: 'Knowledge base settings mode missing ID',
    completeEmbeddingConfig: 'Please complete embedding configuration first',
    detectionSuccess: 'Detection successful,',
    dimensionAutoFilled: 'dimension automatically filled:',
    checkFormCorrectness: 'Please check form correctness',
    systemInitializationCompleted: 'System initialization completed',
    generationFailedRetry: 'Generation failed, please try again',
    chunkSizeDesc: 'Size of each text chunk. Larger chunks preserve more context but may reduce search accuracy.',
    chunkOverlapDesc: 'Number of characters overlapping between adjacent chunks. Helps maintain context at chunk boundaries.',
    selectRelationType: 'Select relation type'
  },
  auth: {
    login: 'Login',
    logout: 'Logout',
    username: 'Username',
    email: 'Email',
    password: 'Password',
    confirmPassword: 'Confirm Password',
    rememberMe: 'Remember Me',
    forgotPassword: 'Forgot Password?',
    loginSuccess: 'Login successful!',
    loginFailed: 'Login failed',
    loggingIn: 'Logging in...',
    register: 'Register',
    registering: 'Registering...',
    createAccount: 'Create Account',
    haveAccount: 'Already have an account?',
    noAccount: 'Don\'t have an account?',
    backToLogin: 'Back to Login',
    registerNow: 'Register Now',
    registerSuccess: 'Registration successful! The system has created an exclusive tenant for you, please login',
    registerFailed: 'Registration failed',
    subtitle: 'Document understanding and semantic search framework based on large models',
    registerSubtitle: 'The system will create an exclusive tenant for you after registration',
    emailPlaceholder: 'Enter email address',
    passwordPlaceholder: 'Enter password (8-32 characters, including letters and numbers)',
    confirmPasswordPlaceholder: 'Enter password again',
    usernamePlaceholder: 'Enter username',
    emailRequired: 'Enter email address',
    emailInvalid: 'Enter correct email format',
    passwordRequired: 'Enter password',
    passwordMinLength: 'Password must be at least 8 characters',
    passwordMaxLength: 'Password cannot exceed 32 characters',
    passwordMustContainLetter: 'Password must contain letters',
    passwordMustContainNumber: 'Password must contain numbers',
    usernameRequired: 'Enter username',
    usernameMinLength: 'Username must be at least 2 characters',
    usernameMaxLength: 'Username cannot exceed 20 characters',
    usernameInvalid: 'Username can only contain letters, numbers, underscores and Chinese characters',
    confirmPasswordRequired: 'Confirm password',
    passwordMismatch: 'Entered passwords do not match',
    loginError: 'Login error, please check email or password',
    loginErrorRetry: 'Login error, please try again later',
    registerError: 'Registration error, please try again later',
    forgotPasswordNotAvailable: 'Password recovery function is temporarily unavailable, please contact administrator'
  },
  common: {
    confirm: 'Confirm',
    cancel: 'Cancel',
    save: 'Save',
    delete: 'Delete',
    edit: 'Edit',
    create: 'Create',
    search: 'Search',
    filter: 'Filter',
    export: 'Export',
    import: 'Import',
    upload: 'Upload',
    download: 'Download',
    refresh: 'Refresh',
    loading: 'Loading...',
    noData: 'No data',
    error: 'Error',
    success: 'Success',
    warning: 'Warning',
    info: 'Information',
    yes: 'Yes',
    no: 'No',
    ok: 'OK',
    close: 'Close',
    back: 'Back',
    next: 'Next',
    finish: 'Finish',
    all: 'All',
    reset: 'Reset',
    clear: 'Clear'
  },
  file: {
    upload: 'Upload File',
    uploadSuccess: 'File uploaded successfully',
    uploadFailed: 'File upload failed',
    delete: 'Delete File',
    deleteSuccess: 'File deleted successfully',
    deleteFailed: 'File deletion failed',
    download: 'Download File',
    preview: 'Preview',
    unsupportedFormat: 'Unsupported file format',
    maxSizeExceeded: 'Maximum file size exceeded',
    selectFile: 'Select File'
  },
  tenant: {
    title: 'Tenant Information',
    name: 'Tenant Name',
    id: 'Tenant ID',
    createdAt: 'Created At',
    updatedAt: 'Updated At',
    status: 'Status',
    active: 'Active',
    inactive: 'Inactive',
    // Additional translations for TenantInfo.vue
    systemInfo: 'System Information',
    viewSystemInfo: 'View system version and user account configuration information',
    version: 'Version',
    buildTime: 'Build Time',
    goVersion: 'Go Version',
    userInfo: 'User Information',
    userId: 'User ID',
    username: 'Username',
    email: 'Email',
    tenantInfo: 'Tenant Information',
    tenantId: 'Tenant ID',
    tenantName: 'Tenant Name',
    description: 'Description',
    business: 'Business',
    noDescription: 'No description',
    noBusiness: 'None',
    statusActive: 'Active',
    statusInactive: 'Not activated',
    statusSuspended: 'Suspended',
    statusUnknown: 'Unknown',
    apiKey: 'API Key',
    keepApiKeySafe: 'Please keep your API Key safe, do not disclose it in public places or code repositories',
    storageInfo: 'Storage Information',
    storageQuota: 'Storage Quota',
    used: 'Used',
    usage: 'Usage',
    apiDevDocs: 'API Developer Documentation',
    useApiKey: 'Use your API Key to start development, view complete API documentation and code examples.',
    viewApiDoc: 'View API Documentation',
    loadingAccountInfo: 'Loading account information...',
    loadFailed: 'Load failed',
    retry: 'Retry',
    apiKeyCopied: 'API Key copied to clipboard',
    unknown: 'Unknown',
    formatError: 'Format error'
  },
  error: {
    network: 'Network error',
    server: 'Server error',
    notFound: 'Not found',
    unauthorized: 'Unauthorized',
    forbidden: 'Access forbidden',
    unknown: 'Unknown error',
    tryAgain: 'Please try again'
  },
  model: {
    llmModel: 'LLM Model',
    embeddingModel: 'Embedding Model',
    rerankModel: 'Rerank Model',
    vlmModel: 'Multimodal Model',
    modelName: 'Model Name',
    modelProvider: 'Model Provider',
    modelUrl: 'Model URL',
    apiKey: 'API Key',
    testConnection: 'Test Connection',
    connectionSuccess: 'Connection successful',
    connectionFailed: 'Connection failed',
    dimension: 'Dimension',
    maxTokens: 'Max Tokens',
    temperature: 'Temperature',
    topP: 'Top P',
    selectModel: 'Select Model',
    customModel: 'Custom Model',
    builtinModel: 'Built-in Model'
  }
}